Thực đơn
JSONP Cách hoạt độngKhi trang web có địa chỉ a.com lấy dữ liệu từ một địa chỉ khác là b.com sẽ bị giới hạn gọi là Same origin policy. Theo chính sách này thì các yêu cầu cần phải có cùng một địa chỉ (từ a.com gọi a.com). Để giải quyết vấn đề, giải pháp jsonp được đưa ra với hai bước giải quyết:
Cụ thể mã hoạt động như sau
Mã nơi gọi yêu cầu (viết với jquery):
$.ajax({ url:"http://myserver/getjson?callback=mycallback", // lưu ý chữ mycallback = hàm phải a.com phải thực hiện,. // ở đây jquery tự động gán vào hàm success, data: {"userid": "1234"}, // tùy chọn dataType: 'json', success:function(j){ alert("Success:" +j); // hàm "f" }, error:function(a, b){ alert("Error"); }});
Lưu ý: Server phải lấy tham số callback gọi từ client
Mã server trả lời (python)
# 1. lấy tên hàm callbackf = self.request.params.get('callback') # hàm f# 2. trả lời với dữ liệu json {'a':1}self.response.out.write(cb+"({a:1})") # tương đương với việc gọi hàm f({a:1})
Mã server trả lời (PHP)
// 1. lấy tên hàm callback$cb = $_GET['callback'] # 2. trả lời với dữ liệu json {'a':1}$array = array('a'=>1);echo $cb."(".json_encode($array).");"
Thực đơn
JSONP Cách hoạt độngLiên quan
JSONP JSON JS Ōnami (DD-111) Jason Pendant Jon Pyong-ho Jôn phôn NoimanTài liệu tham khảo
WikiPedia: JSONP http://code.google.com/p/jsonp-java/ http://www.vcarrer.com/2010/11/about-jsonp-in-java... http://tech.groups.yahoo.com/group/json/message/82 http://myserver/getjson?callback=mycallback%60 http://replay.web.archive.org/20060212113746/http:... http://www.json-p.org/ http://www.json-p.org https://web.archive.org/web/20160304044218/http://...